<!doctype html><html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>01 搭建mybatis环境实现基本查询</title>
  <meta name="generator" content="CherryTree">
  <link rel="stylesheet" href="styles.css" type="text/css" />
</head>
<body><div class="main"><div class="tree">
<p><strong>Index</strong></p>
<p><a href="笔记本--java--框架--mybatis.html">mybatis</a></p>

<ol>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建.html">1 mybatis基本结构搭建</a></li>
<ol>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--01_使用idea创建mybatis创建maven基本工程.html">01 使用idea创建mybatis创建maven基本工程</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--01_搭建mybatis环境实现基本查询.html">01 搭建mybatis环境实现基本查询</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--02_创建mybatis使用数据库.html">02 创建mybatis使用数据库</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--03_创建实体类.html">03 创建实体类</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--04_创建dao接口.html">04 创建dao接口</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--05_创建核心配置文件.html">05 创建核心配置文件</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--06_创建映射文件.html">06 创建映射文件</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--07_测试.html">07 测试</a></li>
<li><a href="笔记本--java--框架--mybatis--1_mybatis基本结构搭建--附加：mybatis注解开发查所有.html">附加：mybatis注解开发查所有</a></li>
</ol>
<li><a href="笔记本--java--框架--mybatis--2_mybatis的crud.html">2 mybatis的crud</a></li>
<ol>
<li><a href="笔记本--java--框架--mybatis--2_mybatis的crud--1_使用基本的xml配置crud.html">1 使用基本的xml配置crud</a></li>
<li><a href="笔记本--java--框架--mybatis--2_mybatis的crud--2_使用注解方式配置crud.html">2 使用注解方式配置crud</a></li>
<li><a href="笔记本--java--框架--mybatis--2_mybatis的crud--3_模糊查询.html">3 模糊查询</a></li>
</ol>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作.html">3 mybatis多表操作</a></li>
<ol>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作--1_一对一查询，数据库建立.html">1 一对一查询，数据库建立</a></li>
<ol>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作--1_一对一查询，数据库建立--1使用queryVo的方式实现一对一查询.html">1使用queryVo的方式实现一对一查询</a></li>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作--1_一对一查询，数据库建立--2_使用配置resultMap完成一对一查询.html">2 使用配置resultMap完成一对一查询</a></li>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作--1_一对一查询，数据库建立--3_一对多的查询.html">3 一对多的查询</a></li>
</ol>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作--2_多对多.html">2 多对多</a></li>
<ol>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作--2_多对多--1_查询角色的用户信息.html">1 查询角色的用户信息</a></li>
<li><a href="笔记本--java--框架--mybatis--3_mybatis多表操作--2_多对多--2_查询用户的角色信息.html">2 查询用户的角色信息</a></li>
</ol>
</ol>
<li><a href="笔记本--java--框架--mybatis--4_mybatis的注解操作.html">4 mybatis的注解操作</a></li>
<ol>
<li><a href="笔记本--java--框架--mybatis--4_mybatis的注解操作--1_注解的基本实现.html">1 注解的基本实现</a></li>
<li><a href="笔记本--java--框架--mybatis--4_mybatis的注解操作--2_使用注解解决实体类属性名和数据库字段名不一致的问题.html">2 使用注解解决实体类属性名和数据库字段名不一致的问题</a></li>
</ol>
<li><a href="笔记本--java--框架--mybatis--5_mybatis注解实现多表操作.html">5 mybatis注解实现多表操作</a></li>
<ol>
<li><a href="笔记本--java--框架--mybatis--5_mybatis注解实现多表操作--1_注解一对一.html">1 注解一对一</a></li>
<li><a href="笔记本--java--框架--mybatis--5_mybatis注解实现多表操作--2_注解实现一对多拆线呢.html">2 注解实现一对多拆线呢</a></li>
<li><a href="笔记本--java--框架--mybatis--5_mybatis注解实现多表操作--3_mybatis注解缓存开启.html">3 mybatis注解缓存开启</a></li>
</ol></ol></div>
<div class="page"><h1><b><u>01 搭建mybatis环境实现基本查询</u></b></h1>一、              使用基本mybatis，进行数据查询<br />1.       在myeclipse中创建一个基本java项目，导入基本所需jar<br />项目结构如下：<br /><img src="images\61-1.png" alt="images\61-1.png" /><br />2.       在src目录下创建mybatis的核心配置文件,并引入基本配置<br /><img src="images\61-2.png" alt="images\61-2.png" /><br />Mybatis.xml中的基本配置如下：<br />         <span style="color:#008080;">&lt;?</span><span style="color:#3f7f7f;">xml</span> <span style="color:#7f007f;">version</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"1.0"</span> <span style="color:#7f007f;">encoding</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"UTF-8"</span> <span style="color:#008080;">?&gt;</span><br /><span style="color:#008080;">&lt;!</span><span style="color:#3f7f7f;">DOCTYPE</span> <span style="color:#008080;">configuration</span><br /><span style="color:#808080;">PUBLIC</span> <span style="color:#008080;">"-//mybatis.org//DTD Config 3.0//EN"</span><br /><span style="color:#3f7f5f;">"http://mybatis.org/dtd/mybatis-3-config.dtd"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">configuration</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">   </span><span style="color:#3f5fbf;">&lt;!-- 和spring整合后 </span>environments<span style="color:#3f5fbf;">配置将废除--&gt;</span><br /><span style="color:#000000;">   </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">environments</span> <span style="color:#7f007f;">default</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"development"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">      </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">environment</span> <span style="color:#7f007f;">id</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"development"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">      </span><span style="color:#3f5fbf;">&lt;!-- 使用</span><span style="color:#3f5fbf;text-decoration:underline;">jdbc</span><span style="color:#3f5fbf;">事务管理--&gt;</span><br /><span style="color:#000000;">         </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">transactionManager</span> <span style="color:#7f007f;">type</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"JDBC"</span> <span style="color:#008080;">/&gt;</span><br /><span style="color:#000000;">      </span><span style="color:#3f5fbf;">&lt;!-- 数据库连接池--&gt;</span><br /><span style="color:#000000;">         </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">dataSource</span> <span style="color:#7f007f;">type</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"POOLED"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">            </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">property</span> <span style="color:#7f007f;">name</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"driver"</span> <span style="color:#7f007f;">value</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"com.mysql.jdbc.Driver"</span> <span style="color:#008080;">/&gt;</span><br /><span style="color:#000000;">            </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">property</span> <span style="color:#7f007f;">name</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"url"</span> <span style="color:#7f007f;">value</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"</span><span style="color:#008080;">/&gt;</span><br /><span style="color:#000000;">            </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">property</span> <span style="color:#7f007f;">name</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"username"</span> <span style="color:#7f007f;">value</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"root"</span> <span style="color:#008080;">/&gt;</span><br /><span style="color:#000000;">            </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">property</span> <span style="color:#7f007f;">name</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"password"</span> <span style="color:#7f007f;">value</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"mysql"</span> <span style="color:#008080;">/&gt;</span><br /><span style="color:#000000;">         </span><span style="color:#008080;">&lt;/</span><span style="color:#3f7f7f;">dataSource</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">      </span><span style="color:#008080;">&lt;/</span><span style="color:#3f7f7f;">environment</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">   </span><span style="color:#008080;">&lt;/</span><span style="color:#3f7f7f;">environments</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;"> </span><br /><span style="color:#008080;">&lt;/</span><span style="color:#3f7f7f;">configuration</span><span style="color:#008080;">&gt;</span><br /> <br />3.       创建数据对应的实体类<br /><img src="images\61-3.png" alt="images\61-3.png" /><br /><img src="images\61-4.png" alt="images\61-4.png" /><br />省略get/set方法。<br />4 . 在src目录下创建实体类对应的文件User.xml<br /><img src="images\61-5.png" alt="images\61-5.png" /><br />         文件内容如下：<br />         <span style="color:#008080;">&lt;?</span><span style="color:#3f7f7f;">xml</span> <span style="color:#7f007f;">version</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"1.0"</span> <span style="color:#7f007f;">encoding</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"UTF-8"</span> <span style="color:#008080;">?&gt;</span><br /><span style="color:#008080;">&lt;!</span><span style="color:#3f7f7f;">DOCTYPE</span> <span style="color:#008080;">mapper</span><br /><span style="color:#808080;">PUBLIC</span> <span style="color:#008080;">"-//mybatis.org//DTD Mapper 3.0//EN"</span><br /><span style="color:#3f7f5f;">"http://mybatis.org/dtd/mybatis-3-mapper.dtd"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">mapper</span> <span style="color:#7f007f;">namespace</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"test"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">   </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">select</span> <span style="color:#7f007f;">id</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"select"</span> <span style="color:#7f007f;">resultType</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"com.itlaiba.pojo.User"</span> <span style="color:#7f007f;">parameterType</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"java.lang.Integer"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">      </span><span style="text-decoration:underline;">select</span> * from user where id = #{id}<br /><span style="color:#000000;">   </span><span style="color:#008080;">&lt;/</span><span style="color:#3f7f7f;">select</span><span style="color:#008080;">&gt;</span><br /><span style="color:#008080;">&lt;/</span><span style="color:#3f7f7f;">mapper</span><span style="color:#008080;">&gt;</span><br /> <br />注意：<span style="color:#7f007f;">namespace ：</span><span style="color:#4f4f4f;">命名空间，用于隔离sql语句，后面会讲另一层非常重要的作用。</span><br /> <br /> <br />         5 . 修改mybatis.xml文件，文件修改为：<br />                            在configuration节点中添加mappers节点，引入对应的配置文件<br />                   <img src="images\61-6.png" alt="images\61-6.png" /><br /> <br />         6. 编写测试类<br />                   创建测试单元并测试代码<br />                            <span style="color:#7f0055;">package</span><span style="color:#000000;"> </span>com.itlaiba.test;<br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>java.io.IOException;<br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>java.io.Reader;<br /> <br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>org.apache.ibatis.io.Resources;<br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>org.apache.ibatis.session.SqlSession;<br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>org.apache.ibatis.session.SqlSessionFactory;<br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>org.apache.ibatis.session.SqlSessionFactoryBuilder;<br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>org.junit.Before;<br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>org.junit.Test;<br /> <br /><span style="color:#7f0055;">import</span><span style="color:#000000;"> </span>com.itlaiba.pojo.User;<br /> <br /><span style="color:#7f0055;">public</span> <span style="color:#7f0055;">class</span><span style="color:#000000;"> </span>FirstTest {<br /><span style="color:#000000;">  </span><br /><span style="color:#000000;">   </span><span style="color:#7f0055;">private</span><span style="color:#000000;"> </span>SqlSessionFactory <span style="color:#0000c0;">sessionFactory</span><span style="color:#000000;">;</span><br /><span style="color:#000000;">   </span><span style="color:#3f7f5f;">//该注解表示调用任何方法之前都调用该方法</span><br /><span style="color:#000000;">   </span><span style="color:#646464;">@Before</span><br /><span style="color:#000000;">   </span><span style="color:#7f0055;">public</span> <span style="color:#7f0055;">void</span><span style="color:#000000;"> </span>load() <span style="color:#7f0055;">throws</span><span style="color:#000000;"> </span>IOException{<br /><span style="color:#000000;">      </span><span style="color:#3f7f5f;">//加载</span><span style="color:#3f7f5f;text-decoration:underline;">mybatis</span><span style="color:#3f7f5f;">核心配置文件</span><br /><span style="color:#000000;">      Reader </span><span style="color:#6a3e3e;">reader</span><span style="color:#000000;"> </span>= Resources.getResourceAsReader(<span style="color:#2a00ff;">"mybatis.xml"</span><span style="color:#000000;">);</span><br /><span style="color:#000000;">      </span><span style="color:#3f7f5f;">//通过配置文件获得对应的SqlSessionFactory</span><br /><span style="color:#000000;">      </span><span style="color:#0000c0;">sessionFactory</span><span style="color:#000000;"> </span>= <span style="color:#7f0055;">new</span><span style="color:#000000;"> </span>SqlSessionFactoryBuilder().build(<span style="color:#6a3e3e;">reader</span><span style="color:#000000;">);</span><br /><span style="color:#000000;">   }</span><br /> <br /><span style="color:#000000;">   </span><span style="color:#646464;">@Test</span><br /><span style="color:#000000;">   </span><span style="color:#7f0055;">public</span> <span style="color:#7f0055;">void</span><span style="color:#000000;"> </span>test() {<br /><span style="color:#000000;">      </span><span style="color:#3f7f5f;">//获得</span><span style="color:#3f7f5f;text-decoration:underline;">sqlsession</span><br /><span style="color:#000000;">      SqlSession </span><span style="color:#6a3e3e;">sqlSession</span><span style="color:#000000;"> </span>= <span style="color:#0000c0;">sessionFactory</span><span style="color:#000000;">.openSession();</span><br /><span style="color:#000000;">      </span><span style="color:#3f7f5f;">//执行命名空间中的test.select方法，该方法有一个参数传入1</span><br /><span style="color:#000000;">      User </span><span style="color:#6a3e3e;">user</span><span style="color:#000000;"> </span>= <span style="color:#6a3e3e;">sqlSession</span><span style="color:#000000;">.selectOne(</span><span style="color:#2a00ff;">"test.select"</span><span style="color:#000000;">,1);</span><br /><span style="color:#000000;">      System.</span><span style="color:#0000c0;">out</span><span style="color:#000000;">.println(</span><span style="color:#6a3e3e;">user</span><span style="color:#000000;">);</span><br /><span style="color:#000000;">   }</span><br /> <br /><span style="color:#000000;">}</span><br /> <br />                   7. 执行得到结果<br />                            <img src="images\61-7.png" alt="images\61-7.png" /><br />                   注：红色为缺少log4j的配置文件。可以添加对应的配置文件<br />        <br />         补：在src目录下添加log4j配置文件<br />                           <img src="images\61-8.png" alt="images\61-8.png" /><br />                   Log4j文件内容如下：<br /> <br /><span style="color:#3f7f5f;"># Global logging configuration</span><br /><span style="color:#000000;">log4j.rootLogger=</span><span style="color:#2a00ff;">DEBUG,</span> <span style="color:#2a00ff;text-decoration:underline;">stdout</span><br /><span style="color:#3f7f5f;"># Console output...</span><br /><span style="color:#000000;">log4j.appender.stdout=</span><span style="color:#2a00ff;">org.apache.log4j.ConsoleAppender</span><br /><span style="color:#000000;">log4j.appender.stdout.layout=</span><span style="color:#2a00ff;">org.apache.log4j.PatternLayout</span><br /><span style="color:#000000;">log4j.appender.stdout.layout.ConversionPattern=</span><span style="color:#2a00ff;">%5p</span> <span style="color:#2a00ff;">[%t]</span> <span style="color:#2a00ff;">-</span> <span style="color:#2a00ff;">%m%n</span><br /> <br /> <br />再次执行得到结果为：        <br /><img src="images\61-9.png" alt="images\61-9.png" />         <br />没有警告，按照debug级别将信息进行了输出<br /><br /><br /><br /><br /><br />8.模糊查询，使用$符号<br />         在User.xml中添加一个模糊查询语句，注意此时的sql<br />         <span style="color:#3f5fbf;">&lt;!-- 实现模糊查询 </span>--&gt;<br /><span style="color:#000000;">   </span><span style="color:#008080;">&lt;</span><span style="color:#3f7f7f;">select</span> <span style="color:#7f007f;">id</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"selectLike"</span> <span style="color:#7f007f;">resultType</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"com.itlaiba.pojo.User"</span> <span style="color:#7f007f;">parameterType</span><span style="color:#000000;">=</span><span style="color:#2a00ff;">"java.lang.String"</span><span style="color:#008080;">&gt;</span><br /><span style="color:#000000;">      select * from user where </span><span style="text-decoration:underline;">uname</span> like <span style="color:#ff0000;">'%${value}%'</span><br /><span style="color:#000000;">   </span><span style="color:#008080;">&lt;/</span><span style="color:#3f7f7f;">select</span><span style="color:#008080;">&gt;</span><br /> <br />9．测试<br />         <span style="color:#646464;">@Test</span><br /><span style="color:#000000;">   </span><span style="color:#7f0055;">public</span> <span style="color:#7f0055;">void</span><span style="color:#000000;"> </span>testlike() {<br /><span style="color:#000000;">      </span><span style="color:#3f7f5f;">// 获得</span><span style="color:#3f7f5f;text-decoration:underline;">sqlsession</span><br /><span style="color:#000000;">      SqlSession </span><span style="color:#6a3e3e;">sqlSession</span><span style="color:#000000;"> </span>= <span style="color:#0000c0;">sessionFactory</span><span style="color:#000000;">.openSession();</span><br /><span style="color:#000000;">      List&lt;User&gt; </span><span style="color:#6a3e3e;background-color:#ffff00;">list</span><span style="color:#000000;"> </span>= <span style="color:#6a3e3e;">sqlSession</span><span style="color:#000000;">.selectList(</span><span style="color:#2a00ff;">"test.selectLike"</span><span style="color:#000000;">, </span><span style="color:#2a00ff;">"ad"</span><span style="color:#000000;">);</span><br /><span style="color:#000000;">      System.</span><span style="color:#0000c0;">out</span><span style="color:#000000;">.println(</span><span style="color:#6a3e3e;background-color:#c0c0c0;">list</span><span style="color:#000000;">);</span><br /><span style="color:#000000;">  }</span><br /><span style="color:#000000;"> </span><br /><span style="color:#000000;">10.得到结果</span><br /><span style="color:#000000;">  </span><img src="images\61-10.png" alt="images\61-10.png" /><br /> <br /> <br />重点：#和$符号的区别<br />         <span style="color:#4f4f4f;">#{}表示一个占位符，通过#{}可以实现preparstament向占位符中设置值，自动进行java类型和jdbc类型的转换，#{}可以防止sql的注入，#{}可以接受简单类型和pojo类型的值，#{}括号中可以是id或者其它名称。</span><br /><span style="color:#4f4f4f;">      ${}表示sql拼接，通过${}可以将parameterType传入的内容拼接在sql语句中且不进行jdbc的转换，${}可以接受简单类型和pojo类型的传入，如果parameterType传入的是单个简单类型，那么${}括号中的值必须是value.</span><br /><br /></div></div>
</body></html>